package br.ufpb.di.ppgi.negocio.iservicos;

import java.util.List;

import br.ufpb.di.ppgi.negocio.modelo.usuario.Usuario;
import br.ufpb.di.ppgi.negocio.servicos.login.Credencial;
import br.ufpb.di.ppgi.persistencia.pagination.ListaPaginada;

public interface IUsuarioService extends IService {

	public abstract Usuario buscar(Long id);

	public abstract boolean alterarSenha(Credencial antiga, Credencial nova);

	public abstract void alterarSenha(Credencial credential, Long id);

	public abstract List<Usuario> listar();

	public abstract Usuario apagar(Long id);

	public abstract Usuario atualizar(Usuario usuario);

	public abstract void adicionar(Usuario usuario);

	public abstract List<Usuario> listarProfessores();

	public abstract Integer qtdePendencias(Usuario colegiado);
	
	public abstract Integer qtdPropostasPendentes(Usuario colegiado);
	
	public abstract Integer qtdDefesasPendentes(Usuario colegiado);

	public abstract Usuario fetchCoordenador();

	public abstract Usuario findByEmail(String email);

	public abstract void resetarSenhaEnviarEmail(Usuario usuario);

	public abstract Usuario findByCPF(String cpf);
	
	public abstract boolean cpfJaExiste(String cpf);	

	public abstract ListaPaginada<Usuario> filtrarPaginando(String key, Integer page, String base);	

}
